const source = [
  ['black', 'white', 'red', 'blue'],
  ['128GB', '256GB', '512GB'],
  ['zhengzhou', 'shenzhen', 'vietnam'],
]

let temp = []
// ['black', '128GB', 'zhengzhou']
// [']

let results = []

combine(source)

function combine(arr, index = 0) {
  arr[index].forEach(item => {
    temp[index] = item

    index + 1 < arr.length
      ? combine(arr, index + 1)
      : results.push(temp.slice())
  })
}

console.log(results)
console.log(results.length)
